package at.guigu.service.impl;

import at.guigu.mapper.OrderMapper;
import at.guigu.po.Order;
import at.guigu.po.User;
import at.guigu.service.IOrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
    private final RestTemplate restTemplate;

    public OrderServiceImpl(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    /**
     * 获取包含用户信息的订单信息
     * @param orderId
     * @return Order
     */
    @Override
    public Order queryOrderById(Long orderId) {
        // 1 查询订单信息
        Order order = this.getById(orderId);
        // 2 利用RestTemplate发起Http请求来获取用户数据
        /*
        // 2.1 设置url路径（存在url硬编码问题）
        String url = "http://localhost:8081/user/" + order.getUserId();
        */
        // 2.1 设置url路径：用服务提供者的服务名代替ip以及端口号------解决url硬编码问题
        String url = "http://userservice/user/" + order.getUserId();
        // 2.2 发送Http请求，实现远程调用
        User user = restTemplate.getForObject(url, User.class);
        // 3 封装用户数据存储到订单信息中
        order.setUser(user);
        return order;
    }
}
